home *** CD-ROM | disk | FTP | other *** search
/ Hardcore Visual Basic 5.0 (2nd Edition) / Hardcore Visual Basic 5.0 - Second Edition (1997)(Microsoft Press).iso / Code / browse.FRM < prev    next >
Text File  |  1997-06-14  |  21KB  |  625 lines

  1. VERSION 5.00
  2. Object = "{6B7E6392-850A-101B-AFC0-4210102A8DA7}#1.1#0"; "comctl32.ocx"
  3. Begin VB.Form FBrowsePictures 
  4.    BackColor       =   &H00C0C0C0&
  5.    BorderStyle     =   1  'Fixed Single
  6.    Caption         =   "Browse Picture Files"
  7.    ClientHeight    =   5415
  8.    ClientLeft      =   2130
  9.    ClientTop       =   2220
  10.    ClientWidth     =   8085
  11.    Icon            =   "browse.frx":0000
  12.    LinkTopic       =   "Form1"
  13.    MaxButton       =   0   'False
  14.    PaletteMode     =   1  'UseZOrder
  15.    ScaleHeight     =   5415
  16.    ScaleWidth      =   8085
  17.    Begin ComctlLib.Toolbar bar 
  18.       Align           =   1  'Align Top
  19.       Height          =   390
  20.       Left            =   0
  21.       TabIndex        =   11
  22.       Top             =   0
  23.       Width           =   8085
  24.       _ExtentX        =   14261
  25.       _ExtentY        =   688
  26.       ButtonWidth     =   609
  27.       ButtonHeight    =   582
  28.       ImageList       =   "imlstBar"
  29.       _Version        =   327680
  30.       BeginProperty Buttons {0713E452-850A-101B-AFC0-4210102A8DA7} 
  31.          NumButtons      =   7
  32.          BeginProperty Button1 {0713F354-850A-101B-AFC0-4210102A8DA7} 
  33.             Caption         =   ""
  34.             Key             =   "Delete"
  35.             Description     =   "Delete File"
  36.             Object.ToolTipText     =   "Delete File"
  37.             Object.Tag             =   ""
  38.             ImageIndex      =   1
  39.          EndProperty
  40.          BeginProperty Button2 {0713F354-850A-101B-AFC0-4210102A8DA7} 
  41.             Caption         =   ""
  42.             Key             =   "Copy"
  43.             Description     =   "Copy File"
  44.             Object.ToolTipText     =   "Copy File"
  45.             Object.Tag             =   ""
  46.             ImageIndex      =   2
  47.          EndProperty
  48.          BeginProperty Button3 {0713F354-850A-101B-AFC0-4210102A8DA7} 
  49.             Caption         =   ""
  50.             Key             =   "Move"
  51.             Description     =   "Move File"
  52.             Object.ToolTipText     =   "Move File"
  53.             Object.Tag             =   ""
  54.             ImageIndex      =   3
  55.          EndProperty
  56.          BeginProperty Button4 {0713F354-850A-101B-AFC0-4210102A8DA7} 
  57.             Caption         =   ""
  58.             Key             =   "Rename"
  59.             Description     =   "Rename File"
  60.             Object.ToolTipText     =   "Rename File"
  61.             Object.Tag             =   ""
  62.             ImageIndex      =   4
  63.          EndProperty
  64.          BeginProperty Button5 {0713F354-850A-101B-AFC0-4210102A8DA7} 
  65.             Key             =   ""
  66.             Object.Tag             =   ""
  67.             Style           =   3
  68.             MixedState      =   -1  'True
  69.          EndProperty
  70.          BeginProperty Button6 {0713F354-850A-101B-AFC0-4210102A8DA7} 
  71.             Caption         =   ""
  72.             Key             =   "Connect"
  73.             Description     =   "Map Network Drive"
  74.             Object.ToolTipText     =   "Map Network Drive"
  75.             Object.Tag             =   ""
  76.             ImageIndex      =   5
  77.          EndProperty
  78.          BeginProperty Button7 {0713F354-850A-101B-AFC0-4210102A8DA7} 
  79.             Caption         =   ""
  80.             Key             =   "Disconnect"
  81.             Description     =   "Disconnect Net Drive"
  82.             Object.ToolTipText     =   "Disconnect Net Drive"
  83.             Object.Tag             =   ""
  84.             ImageIndex      =   6
  85.          EndProperty
  86.       EndProperty
  87.       MouseIcon       =   "browse.frx":0CFA
  88.    End
  89.    Begin VB.PictureBox picPic 
  90.       AutoSize        =   -1  'True
  91.       Height          =   1848
  92.       Left            =   5508
  93.       ScaleHeight     =   1785
  94.       ScaleWidth      =   2250
  95.       TabIndex        =   13
  96.       Top             =   930
  97.       Visible         =   0   'False
  98.       Width           =   2304
  99.    End
  100.    Begin VB.PictureBox picPal 
  101.       AutoRedraw      =   -1  'True
  102.       Height          =   324
  103.       Left            =   144
  104.       ScaleHeight     =   270
  105.       ScaleWidth      =   7695
  106.       TabIndex        =   12
  107.       Top             =   5016
  108.       Width           =   7752
  109.    End
  110.    Begin VB.ComboBox cboPicType 
  111.       Height          =   288
  112.       Left            =   144
  113.       Style           =   2  'Dropdown List
  114.       TabIndex        =   4
  115.       Top             =   4200
  116.       Width           =   2490
  117.    End
  118.    Begin VB.TextBox txtPicType 
  119.       BorderStyle     =   0  'None
  120.       Height          =   228
  121.       Left            =   144
  122.       TabIndex        =   3
  123.       Text            =   "*.bmp;*.wmf;*.ico;*.dib "
  124.       Top             =   555
  125.       Width           =   2448
  126.    End
  127.    Begin VB.FileListBox filPic 
  128.       Height          =   2625
  129.       Left            =   144
  130.       TabIndex        =   2
  131.       Top             =   930
  132.       Width           =   2505
  133.    End
  134.    Begin VB.DirListBox dirPic 
  135.       Height          =   2790
  136.       Left            =   2928
  137.       TabIndex        =   1
  138.       Top             =   930
  139.       Width           =   2412
  140.    End
  141.    Begin VB.DriveListBox drvPic 
  142.       Height          =   288
  143.       Left            =   2925
  144.       TabIndex        =   0
  145.       Top             =   4200
  146.       Width           =   2490
  147.    End
  148.    Begin ComctlLib.ImageList imlstBar 
  149.       Left            =   6984
  150.       Top             =   2868
  151.       _ExtentX        =   794
  152.       _ExtentY        =   794
  153.       BackColor       =   -2147483643
  154.       ImageWidth      =   16
  155.       ImageHeight     =   16
  156.       MaskColor       =   12632256
  157.       _Version        =   327680
  158.       BeginProperty Images {0713E8C2-850A-101B-AFC0-4210102A8DA7} 
  159.          NumListImages   =   6
  160.          BeginProperty ListImage1 {0713E8C3-850A-101B-AFC0-4210102A8DA7} 
  161.             Picture         =   "browse.frx":0D16
  162.             Key             =   ""
  163.          EndProperty
  164.          BeginProperty ListImage2 {0713E8C3-850A-101B-AFC0-4210102A8DA7} 
  165.             Picture         =   "browse.frx":0E2A
  166.             Key             =   ""
  167.          EndProperty
  168.          BeginProperty ListImage3 {0713E8C3-850A-101B-AFC0-4210102A8DA7} 
  169.             Picture         =   "browse.frx":0F3E
  170.             Key             =   ""
  171.          EndProperty
  172.          BeginProperty ListImage4 {0713E8C3-850A-101B-AFC0-4210102A8DA7} 
  173.             Picture         =   "browse.frx":1052
  174.             Key             =   ""
  175.          EndProperty
  176.          BeginProperty ListImage5 {0713E8C3-850A-101B-AFC0-4210102A8DA7} 
  177.             Picture         =   "browse.frx":1166
  178.             Key             =   ""
  179.          EndProperty
  180.          BeginProperty ListImage6 {0713E8C3-850A-101B-AFC0-4210102A8DA7} 
  181.             Picture         =   "browse.frx":127A
  182.             Key             =   ""
  183.          EndProperty
  184.       EndProperty
  185.    End
  186.    Begin VB.Label lblDescribe 
  187.       Height          =   1752
  188.       Left            =   5544
  189.       TabIndex        =   10
  190.       Top             =   3492
  191.       UseMnemonic     =   0   'False
  192.       Width           =   2292
  193.    End
  194.    Begin VB.Image imgSIcon 
  195.       Height          =   276
  196.       Left            =   6096
  197.       Top             =   2880
  198.       Width           =   360
  199.    End
  200.    Begin VB.Image imgLIcon 
  201.       Height          =   480
  202.       Left            =   5520
  203.       Top             =   2868
  204.       Width           =   480
  205.    End
  206.    Begin VB.Image imgSound 
  207.       Height          =   330
  208.       Left            =   6570
  209.       Top             =   3030
  210.       Visible         =   0   'False
  211.       Width           =   360
  212.    End
  213.    Begin VB.Image imgPic 
  214.       Height          =   1860
  215.       Left            =   5520
  216.       Top             =   900
  217.       Width           =   2280
  218.    End
  219.    Begin VB.Label lbl 
  220.       Caption         =   "File Name:"
  221.       Height          =   228
  222.       Index           =   1
  223.       Left            =   192
  224.       TabIndex        =   9
  225.       Top             =   108
  226.       Width           =   2436
  227.    End
  228.    Begin VB.Label lbl 
  229.       Caption         =   "Directories:"
  230.       Height          =   216
  231.       Index           =   5
  232.       Left            =   2916
  233.       TabIndex        =   8
  234.       Top             =   108
  235.       Width           =   2436
  236.    End
  237.    Begin VB.Label lbl 
  238.       Caption         =   "List Files of Type:"
  239.       Height          =   312
  240.       Index           =   4
  241.       Left            =   144
  242.       TabIndex        =   7
  243.       Top             =   3864
  244.       Width           =   2508
  245.    End
  246.    Begin VB.Label lbl 
  247.       Caption         =   "Drives:"
  248.       Height          =   312
  249.       Index           =   3
  250.       Left            =   2925
  251.       TabIndex        =   6
  252.       Top             =   3864
  253.       Width           =   2436
  254.    End
  255.    Begin VB.Label lblPic 
  256.       Height          =   270
  257.       Left            =   2925
  258.       TabIndex        =   5
  259.       Top             =   555
  260.       Width           =   4905
  261.    End
  262. End
  263. Attribute VB_Name = "FBrowsePictures"
  264. Attribute VB_GlobalNameSpace = False
  265. Attribute VB_Creatable = False
  266. Attribute VB_PredeclaredId = True
  267. Attribute VB_Exposed = False
  268. Option Explicit
  269.  
  270. ' Create an object that notifies of file changes
  271. Private notify As CFileNotify
  272.  
  273. ' Implement an interface that connects to CFileNotify
  274. Implements IFileNotifier
  275.  
  276. Private hNotifyDir As Long
  277. Private hNotifyFile As Long
  278. Private hNotifyChange As Long
  279.  
  280. Private sInitDir As String
  281. Private sFilePath As String     ' d:\path\
  282. Private sFileName As String     ' base.ext
  283. ' Full file spec is sFilePath & sFileName
  284. Private nsPicType As New Collection
  285. Private dxPic As Long, dyPic As Long, yLbl As Long
  286. Private ordMouse As Integer
  287. Private afFilter As Long
  288. Private fHasShell As Boolean
  289. Private hPalBmp As Long
  290.  
  291. Private Sub Form_Load()
  292.  
  293.     dxPic = imgPic.Width
  294.     dyPic = imgPic.Height
  295.     yLbl = lblDescribe.Top
  296.     BugMessage "Load"
  297.     'fHasShell = HasShell
  298.     
  299.     With cboPicType
  300.         .AddItem "All Picture Files"
  301.         nsPicType.Add "*.bmp;*.dib;*.ico;*.wmf;*.cur;*.wav"
  302.         .AddItem "Bitmaps (*.BMP;*.DIB;*.GIF;*.JPG)"
  303.         nsPicType.Add "*.bmp;*.dib;*.gif;*.jpg"
  304.         .AddItem "Metafiles (*.WMF)"
  305.         nsPicType.Add "*.wmf"
  306.         .AddItem "Icons (*.ICO)"
  307.         nsPicType.Add "*.ico"
  308.         .AddItem "Cursors (*.CUR;*.ICO)"
  309.         nsPicType.Add "*.cur;*.ico"
  310.         .AddItem "Waves (*.WAV)"
  311.         nsPicType.Add "*.wav"
  312.         .AddItem "All Files (*.*)"
  313.         nsPicType.Add "*.*"
  314.         .ListIndex = 0
  315.     End With
  316.     
  317.     ' Save mouse pointer so we can restore
  318.     ordMouse = MousePointer
  319.     
  320.     ' Restore form state
  321.     RestoreForm Me
  322.     ' Get last directory
  323.     sInitDir = GetSetting(App.EXEName, "Options", "LastPath", CurDir$)
  324.     
  325.     ' Changing path triggers notification initialization
  326.     hNotifyDir = hInvalid
  327.     hNotifyFile = hInvalid
  328.     hNotifyChange = hInvalid
  329.     Set notify = New CFileNotify
  330.     On Error Resume Next
  331.     ChDrive sInitDir
  332.     dirPic.Path = sInitDir
  333.     If Err Then dirPic.Path = App.Path
  334.     On Error GoTo 0
  335.     
  336. End Sub
  337.  
  338. Private Sub Form_Unload(Cancel As Integer)
  339.     BugMessage "Unload"
  340.     notify.Disconnect hNotifyDir
  341.     notify.Disconnect hNotifyFile
  342.     notify.Disconnect hNotifyChange
  343.     SaveSetting App.EXEName, "Options", "LastPath", dirPic.Path
  344.     SaveForm Me
  345.     'SaveWindow Me.hWnd, Me.Caption
  346. End Sub
  347.  
  348. ' FileTitle is read-only
  349. Public Property Get FileTitle() As String
  350.     FileTitle = sFileName  ' FileTitle is actually file name
  351. End Property
  352.  
  353. Public Property Get FileName() As String
  354.     If sFileName <> sEmpty Then
  355.         FileName = sFilePath & sFileName
  356.     ' Else (comments out because strings are empty by default)
  357.     '    FileName = sEmpty
  358.     End If
  359. End Property
  360.  
  361. Public Property Let FileName(sFilePathA As String)
  362.     sFilePath = sFilePathA
  363. End Property
  364.  
  365. Public Property Get InitDir() As String
  366.     InitDir = sInitDir
  367. End Property
  368.  
  369. Public Property Let InitDir(sInitDirA As String)
  370.     sInitDir = sInitDirA
  371. End Property
  372.  
  373. Public Property Let FilterType(afFilterA As Long)
  374.     afFilter = afFilterA
  375. End Property
  376.  
  377. Private Sub bar_ButtonClick(ByVal Button As Button)
  378.     Dim sFullPath As String, sDst As String, errOK As Long
  379.     Static sLastString As String
  380.     Const sTitle = "Destination"
  381.     sFullPath = sFilePath & filPic.FileName
  382.     Select Case Button.Key
  383.     Case "Delete"
  384.         If Not DeleteAnyFile(sFullPath, FOF_NOCONFIRMATION) Then
  385.             MsgBox "Can't delete file"
  386.         End If
  387.     Case "Copy"
  388.         sDst = InputBox("Copy destination: ", sTitle, sLastString)
  389.         If sDst = sEmpty Then Exit Sub
  390.         If Not CopyAnyFile(sFullPath, sDst) Then
  391.             MsgBox "Can't copy file"
  392.         Else
  393.             sLastString = sDst
  394.         End If
  395.     Case "Move"
  396.         sDst = InputBox("Move destination: ", sTitle, sLastString)
  397.         If sDst = sEmpty Then Exit Sub
  398.         If Not MoveAnyFile(sFullPath, sDst) Then
  399.             MsgBox "Can't move file"
  400.         Else
  401.             sLastString = sDst
  402.         End If
  403.     Case "Rename"
  404.         sDst = InputBox("New name: ", sTitle, sLastString)
  405.         If sDst = sEmpty Then Exit Sub
  406.         If Not RenameAnyFile(sFullPath, sFilePath & sDst) Then
  407.             MsgBox "Can't rename file"
  408.         Else
  409.             sLastString = sDst
  410.         End If
  411.     Case "Connect"
  412.         errOK = WNetConnectionDialog(Me.hWnd, RESOURCETYPE_DISK)
  413.         drvPic.Refresh
  414.     Case "Disconnect"
  415.         errOK = WNetDisconnectDialog(Me.hWnd, RESOURCETYPE_DISK)
  416.         drvPic.Refresh
  417.     End Select
  418. End Sub
  419.  
  420. Private Sub cboPicType_Change()
  421.     txtPicType.Text = nsPicType(cboPicType.ListIndex + 1)
  422. End Sub
  423.  
  424. Private Sub cboPicType_Click()
  425.     txtPicType.Text = nsPicType(cboPicType.ListIndex + 1)
  426.     filPic.Pattern = txtPicType.Text
  427. End Sub
  428.  
  429. Private Sub cmdCancel_Click()
  430.     sFileName = sEmpty
  431.     Unload Me
  432. End Sub
  433.  
  434. Private Sub cmdOK_Click()
  435.     Unload Me
  436. End Sub
  437.  
  438. Private Sub dirPic_Change()
  439. With notify
  440.     ' Synchronize the file control and select the first file
  441.     filPic.Path = dirPic.Path
  442.     If filPic.ListCount > 0 Then filPic.ListIndex = 0
  443.  
  444.     ' Watch whole drive for directory changes
  445.     If hNotifyDir <> -1 Then .Disconnect hNotifyDir
  446.     hNotifyDir = .Connect(Me, dirPic.Path, _
  447.                           FILE_NOTIFY_CHANGE_DIR_NAME, False)
  448.     ' Watch current directory for name changes (delete, rename, create)
  449.     If hNotifyFile <> -1 Then .Disconnect hNotifyFile
  450.     hNotifyFile = .Connect(Me, dirPic.Path, _
  451.                            FILE_NOTIFY_CHANGE_FILE_NAME, False)
  452.     ' Watch current directory for modifications of file contents
  453.     If hNotifyChange <> -1 Then notify.Disconnect hNotifyChange
  454.     hNotifyChange = .Connect(Me, dirPic.Path, _
  455.                              FILE_NOTIFY_CHANGE_LAST_WRITE, False)
  456. End With
  457. End Sub
  458.  
  459. Private Sub drvPic_Change()
  460.     On Error GoTo NoDrive
  461.     ChDrive drvPic.Drive
  462.     dirPic.Path = drvPic.Drive
  463.     Exit Sub
  464. NoDrive:
  465. End Sub
  466.  
  467. Private Sub filPic_PathChange()
  468.     sFilePath = NormalizePath(filPic.Path)
  469.     If filPic.ListCount > 0 Then filPic.ListIndex = 0
  470. End Sub
  471.  
  472. Private Sub filPic_Click()
  473.     sFileName = filPic.FileName
  474.     UpdateFile sFilePath & sFileName
  475. End Sub
  476.  
  477. Private Sub filPic_PatternChange()
  478.     If filPic.ListCount > 0 Then
  479.         filPic.ListIndex = 0
  480.     End If
  481. End Sub
  482.  
  483. Private Sub UpdateFile(sFile As String)
  484. With imgPic
  485.     Static fAviOpen As Boolean
  486.     If fAviOpen Then
  487.         mciSendString "close mywin", vbNullString, 0, hNull
  488.         fAviOpen = False
  489.         picPic.Visible = False
  490.     End If
  491.     PaletteMode = vbPaletteModeHalftone
  492.     picPal.Visible = False
  493.     MousePointer = ordMouse
  494.     .Visible = False
  495.     lblPic.Caption = sFile
  496.     .Stretch = False
  497.     Set imgSIcon.Picture = Nothing
  498.     Set imgLIcon.Picture = Nothing
  499.     Dim s As String, sExt As String
  500.     sExt = UCase$(GetFileExt(sFile))
  501.     imgSIcon.Picture = Nothing
  502.     imgLIcon.Picture = Nothing
  503.     lblDescribe.Caption = sEmpty
  504.     lblDescribe.Top = yLbl
  505.     hPalBmp = hNull
  506.     
  507.     Dim x As Long, y As Long, xHot As Long, yHot As Long
  508.     On Error Resume Next
  509.     Select Case sExt
  510.     Case ".WAV"
  511.         Set .Picture = imgSound.Picture
  512.         s = s & "File length: " & FileLen(sFile)
  513.         BugMessage s
  514.         lblDescribe.Caption = s
  515.         .Visible = True
  516.         sndPlaySound sFile, 0
  517.     Case ".ICO"
  518.         s = "Type: Icon" & sCrLf
  519.         Set imgPic = LoadPicture(sFile)
  520.         imgPic.Width = 128 * Screen.TwipsPerPixelX
  521.         imgPic.Height = 128 * Screen.TwipsPerPixelY
  522.         Set imgLIcon.Picture = LoadAnyPicture(sFile, eisDefault)
  523.         GetIconSize imgLIcon.Picture.Handle, x, y
  524.         s = s & "Large: " & x & "x" & y & sCrLf
  525.         If fHasShell Then
  526.             Set imgSIcon.Picture = LoadAnyPicture(sFile, eisSmall)
  527.             GetIconSize imgSIcon.Picture.Handle, x, y
  528.             s = s & "Small: " & x & "x" & y & sCrLf
  529.         End If
  530.         
  531.     Case ".CUR"
  532.         Set imgPic = LoadPicture(sFile)
  533.         s = "Type: Cursor" & sCrLf
  534.         Me.MousePointer = vbCustom
  535.         Set Me.MouseIcon = .Picture
  536.         GetIconSize imgPic.Picture.Handle, x, y, xHot, yHot
  537.         s = s & "Hot spot: " & xHot & "x" & yHot & sCrLf
  538.         
  539.     Case ".BMP", ".DIB", ".GIF", ".JPG"
  540.         lblDescribe.Top = imgLIcon.Top
  541.         s = "Type: Bitmap" & sCrLf
  542.         If 0 Then
  543.         Set imgPic = LoadPicture(sFile)
  544.         Else
  545.         Dim hBmp As Long, hPal As Long
  546.         hBmp = LoadImage(App.hInstance, sFile, IMAGE_BITMAP, 0, 0, _
  547.                          LR_LOADFROMFILE Or LR_CREATEDIBSECTION)
  548.         hPal = GetBitmapPalette(hBmp)
  549.         Set imgPic = BitmapToPicture(hBmp, hPal)
  550.         End If
  551.         If ScaleX(.Picture.Width) > dxPic Then
  552.             .Height = (dxPic / ScaleX(.Picture.Width)) * _
  553.                       ScaleY(.Picture.Height)
  554.             .Width = dxPic
  555.         End If
  556.         If ScaleY(.Picture.Height) > dyPic Then
  557.             .Width = (dyPic / ScaleY(.Picture.Height)) * _
  558.                      ScaleX(.Picture.Width)
  559.             .Height = dyPic
  560.             .Stretch = True
  561.         End If
  562.         GetBitmapSize imgPic.Picture.Handle, x, y
  563.         s = s & "Image: " & Int(ScaleX(imgPic.Width, vbTwips, vbPixels)) & _
  564.                 "x" & Int(ScaleX(imgPic.Height, vbTwips, vbPixels)) & sCrLf
  565.         s = s & "Picture: " & x & "x" & y & sCrLf
  566.         s = s & "Handle: &H" & Hex(.Picture.Handle) & sCrLf
  567.         s = s & "File length: " & FileLen(sFile) & sCrLf
  568.         s = s & "Palette handle: &H" & Hex(.Picture.hPal) & sCrLf
  569.         If .Picture.hPal Then
  570.             s = s & "Palette size: " & PalSize(.Picture.hPal) & " colors" & sCrLf
  571.             PaletteMode = vbPaletteModeCustom
  572.             Palette = .Picture
  573.             picPal.Cls
  574.             picPal.Visible = True
  575.             DrawPalette picPal, .Picture.hPal
  576.             hPalBmp = .Picture.hPal
  577.         End If
  578.     Case ".WMF"
  579.         s = "Type: Metafile" & sCrLf
  580.         Set imgPic = LoadPicture(sFile)
  581.         imgPic.Width = dxPic
  582.         imgPic.Height = dyPic
  583.         s = s & "Image: " & Int(ScaleX(imgPic.Width, vbTwips, vbPixels)) & _
  584.                 "x" & Int(ScaleX(imgPic.Height, vbTwips, vbPixels)) & sCrLf
  585.         s = s & "Picture: " & Int(ScaleX(.Picture.Width, 8, vbPixels)) & _
  586.                 "x" & Int(ScaleY(.Picture.Height, 8, vbPixels)) & sCrLf
  587.         s = s & "Handle: &H" & Hex(.Picture.Handle) & sCrLf
  588.         s = s & "File length: " & FileLen(sFile)
  589.     Case Else    ' Unknown extension
  590.         Set imgPic = LoadPicture(sFile)
  591.         If Err Then
  592.             s = "Unknown format"
  593.         Else
  594.         
  595.         End If
  596.     End Select
  597.     
  598.     BugMessage s
  599.     lblDescribe.Caption = s
  600.     .Stretch = True
  601.     .Visible = True
  602. End With
  603. End Sub
  604.  
  605. Private Sub IFileNotifier_Change(sDir As String, _
  606.                                  efn As FileNotify.EFILE_NOTIFY, _
  607.                                  fSubTree As Boolean)
  608.     BugMessage "Directory: " & sDir & _
  609.                " (" & efn & ":" & fSubTree & ")" & sCrLf
  610.     Select Case efn
  611.     Case FILE_NOTIFY_CHANGE_DIR_NAME, FILE_NOTIFY_CHANGE_FILE_NAME
  612.         Dim i As Integer
  613.         ' Refresh drive, directory, and file lists
  614.         i = filPic.ListIndex
  615.         filPic.Refresh
  616.         filPic.ListIndex = IIf(i, i - 1, i)
  617.         dirPic.Refresh
  618.         drvPic.Refresh
  619.     Case FILE_NOTIFY_CHANGE_LAST_WRITE
  620.         ' Refresh current picture in case it changed
  621.         filPic_Click
  622.     End Select
  623. End Sub
  624. '
  625.